home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / include / transformn.h < prev    next >
C/C++ Source or Header  |  1993-07-26  |  3KB  |  92 lines

  1. /* Copyright (c) 1992 The Geometry Center; University of Minnesota
  2.    1300 South Second Street;  Minneapolis, MN  55454, USA;
  3.    
  4. This file is part of geomview/OOGL. geomview/OOGL is free software;
  5. you can redistribute it and/or modify it only under the terms given in
  6. the file COPYING, which you should have received along with this file.
  7. This and other related software may be obtained via anonymous ftp from
  8. geom.umn.edu; email: software@geom.umn.edu. */
  9.  
  10. /* Authors: Charlie Gunn, Pat Hanrahan, Stuart Levy, Tamara Munzner, Mark Phillips */
  11.  
  12. #ifndef TRANSFORMNDEF
  13. #define TRANSFORMNDEF
  14.  
  15. #include "hpointn.h"    /* Defines HPointN and TransformN */
  16. #include "transform.h"
  17.  
  18. /*
  19.  * Space & model flags; used to specify what space we're in, and
  20.  * a model for hyperbolic space.  The actual value may be a logical
  21.  * OR of a space and a model value.
  22.  */
  23.  
  24.     /* Construct a transform.  NULL a => identity */
  25. /*skip*/
  26. extern TransformN *TmNCreate( int idim, int odim, HPtNCoord *a);
  27.     /* Destroy */
  28. /*skip*/
  29. extern void TmNDelete( TransformN *T );
  30.  
  31.     /* Get and set space */
  32. /*skip*/
  33. extern int TmNSpace( const TransformN *T );
  34. /*skip*/
  35. extern TransformN *TmNSetSpace( TransformN *T, int space );
  36.  
  37.     /* Invert */
  38. extern TransformN *TmNInvert( const TransformN *T, TransformN *Tinv);
  39.  
  40.     /* Transpose */
  41. extern TransformN *TmNTranspose( const TransformN *from, TransformN *to);
  42.  
  43.     /* Multiply transforms */
  44. extern TransformN *TmNConcat( const TransformN *A, const TransformN *B, TransformN *result);
  45.  
  46.     /* Copy */
  47. extern TransformN *TmNCopy( const TransformN *Tsrc, TransformN *Tdst);
  48.  
  49.     /* Set to identity */
  50. extern TransformN *TmNIdentity( TransformN *T);
  51.  
  52.     /* Euclidean translations */
  53. extern TransformN *TmNTranslate( TransformN *T, const HPointN *p);
  54. extern TransformN *TmNTranslateOrigin( TransformN *T, const HPointN *pt);
  55.  
  56.     /* Translations by the space of 'pt' */
  57. /*skip*/
  58. extern TransformN *TmNSpaceTranslate( TransformN *T, HPointN *pt);
  59. /*skip*/
  60. extern TransformN *TmNSpaceTranslateOrigin( TransformN *T, HPointN *pt);
  61.  
  62.     /* Scale by the components of 'amount' */
  63. extern TransformN *TmNScale( TransformN *T, const HPointN *amount);
  64.  
  65.     /* Construct a geodesic rotation taking vector 'from' to 'toward' */
  66. extern TransformN *TmNRotate( TransformN *T, const HPointN *from, const HPointN *toward);
  67.  
  68.     /* Modify nxn matrix to accomodate usual matrix from Geomview */
  69. /*skip*/
  70. extern TransformN *TmNApplyDN( TransformN *T, int *permute, Transform3 delta);
  71.  
  72.     /* Add ones and zeros to a matrix to make it larger */
  73. extern TransformN *TmNPad(TransformN *T1, short idim, short odim, TransformN *T2);
  74.  
  75.     /* Add just zeros to a matrix to make it larger */
  76. extern TransformN *TmNPadZero(TransformN *T1, short idim, short odim, TransformN *T2);
  77.  
  78.     /* Return dimensions of a TransformN.  Value is first dimension. */
  79.     /* idim and/or odim may be NULL, in which case they're not returned */
  80. extern int TmNGetSize(const TransformN *T, int *idim, int *odim);
  81.  
  82.     /* Print a TransformN */
  83. extern void TmNPrint(FILE *f, const TransformN *T);
  84.  
  85.     /* Get a TransformN, given a file pointer */
  86. extern TransformN *TmNRead(FILE *f);
  87.  
  88.     /* scale all elements of "upper left" of matrix by a scalar */
  89. extern TransformN *CtmNScale( HPtNCoord s, TransformN *in, TransformN *out);
  90.  
  91. # endif
  92.